﻿namespace WSBancoIdeal
{
    using System;
    using System.Linq;
    using System.Web.Script.Serialization;
    using System.Web.Script.Services;
    using System.Web.Services;
    using Data;

    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    [System.Web.Script.Services.ScriptService]
    public class ClientesWS : System.Web.Services.WebService
    {
        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public string GetClienteXUsuarioYClave(string usuario, string clave)
        {
            using (Banking_MSEntities bd = new Banking_MSEntities())
            {
                var Cli = (from c in bd.Clientes
                           where c.Usuario == usuario && c.Clave == clave
                           select new
                           {
                               idCliente = c.idCliente,
                               campFechaSolicitud = c.campFechaSolicitud,
                               campSucursal = c.campSucursal,
                               campTipoSolicitud = c.campTipoSolicitud,
                               campTipoVinculo = c.campTipoVinculo,
                               campTipoCuenta = c.campTipoCuenta,
                               campNombreA = c.campNombreA,
                               campNombreB = c.campNombreB,
                               campApellidoA = c.campApellidoA,
                               campApellidoB = c.campApellidoB,
                               campSexo = c.campSexo,
                               campDiaNacimiento = c.campDiaNacimiento,
                               campMesNacimiento = c.campMesNacimiento,
                               campAnoNacimiento = c.campAnoNacimiento,
                               campPaisNacimiento = c.campPaisNacimiento,
                               campCiudadNacimiento = c.campCiudadNacimiento,
                               campDepartNacimiento = c.campDepartNacimiento,
                               campNacionalidad = c.campNacionalidad,
                               campTipoIdentificacion = c.campTipoIdentificacion,
                               campOtroTipoIdentificacion = c.campOtroTipoIdentificacion,
                               campNumeroIdentificacion = c.campNumeroIdentificacion,
                               campCiudadIdentificacion = c.campCiudadIdentificacion,
                               campCelular = c.campCelular,
                               campCorreo = c.campCorreo,
                               campEstadoCivil = c.campEstadoCivil,
                               campNivelEstudios = c.campNivelEstudios,
                               campTituloProfesional = c.campTituloProfesional,
                               campDireccionResidencia = c.campDireccionResidencia,
                               campPaisResidencia = c.campPaisResidencia,
                               campDepartamentoResidencia = c.campDepartamentoResidencia,
                               campCiudadResidencia = c.campCiudadResidencia,
                               campTelefonoResidencia = c.campTelefonoResidencia,
                               campDireccionOficina = c.campDireccionOficina,
                               campPaisOficina = c.campPaisOficina,
                               campDepartamentoOficina = c.campDepartamentoOficina,
                               campCiudadOficina = c.campCiudadOficina,
                               campTelefonoOficina = c.campTelefonoOficina,
                               campDondeCorrespondencia = c.campDondeCorrespondencia,
                               campComoEnviarInfo = c.campComoEnviarInfo,
                               campTipoVivienda = c.campTipoVivienda,
                               campOtroTipoVivienda = c.campOtroTipoVivienda,
                               campValorVivienda = c.campValorVivienda,
                               campPersonasCargo = c.campPersonasCargo,
                               campTieneConyugue = c.campTieneConyugue,
                               campNombreAConyugue = c.campNombreAConyugue,
                               campNombreBConyugue = c.campNombreBConyugue,
                               campApellidoAConyugue = c.campApellidoAConyugue,
                               campApellidoBConyugue = c.campApellidoBConyugue,
                               campConyugueTipoIdentificacion = c.campConyugueTipoIdentificacion,
                               campConyugueOtroTipoIdentificacion = c.campConyugueOtroTipoIdentificacion,
                               campConyugueNumeroIdentificacion = c.campConyugueNumeroIdentificacion,
                               campConyugueCiudadIdentificacion = c.campConyugueCiudadIdentificacion,
                               campTieneRepresentante = c.campTieneRepresentante,
                               campNombreARepresentante = c.campNombreARepresentante,
                               campNombreBRepresentante = c.campNombreBRepresentante,
                               campApellidoARepresentante = c.campApellidoARepresentante,
                               campApellidoBRepresentante = c.campApellidoBRepresentante,
                               campRepresentanteTipoIdentificacion = c.campRepresentanteTipoIdentificacion,
                               campRepresentanteOtroTipoIdentificacion = c.campRepresentanteOtroTipoIdentificacion,
                               campRepresentanteNumeroIdentificacion = c.campRepresentanteNumeroIdentificacion,
                               campRepresentanteCiudadIdentificacion = c.campRepresentanteCiudadIdentificacion,
                               campVinculoLaboral = c.campVinculoLaboral,
                               campNombreEmpresa = c.campNombreEmpresa,
                               campEsSocioEmpresa = c.campEsSocioEmpresa,
                               campLaboralCargo = c.campLaboralCargo,
                               campFechaInicioLaboral = c.campFechaInicioLaboral,
                               campLaboralActividadEmpresa = c.campLaboralActividadEmpresa,
                               campPersonaExpuesta = c.campPersonaExpuesta,
                               campIngresosMensuales = c.campIngresosMensuales,
                               campEgresosMensuales = c.campEgresosMensuales,
                               campTotalActivo = c.campTotalActivo,
                               campTotalPasivo = c.campTotalPasivo,
                               campVentasAnuales = c.campVentasAnuales,
                               campTextOtrosIngresosMensuales = c.campTextOtrosIngresosMensuales,
                               campTextProcedenciaIngresos = c.campTextProcedenciaIngresos,
                               campDeclaraRenta = c.campDeclaraRenta,
                               campRealizaOperacionesInt = c.campRealizaOperacionesInt,
                               campTipoOperacionesInt0 = c.campTipoOperacionesInt0,
                               campTipoOperacionesInt1 = c.campTipoOperacionesInt1,
                               campTipoOperacionesInt2 = c.campTipoOperacionesInt2,
                               campTipoOperacionesInt3 = c.campTipoOperacionesInt3,
                               campTipoOperacionesInt4 = c.campTipoOperacionesInt4,
                               campOtroTipoOperacionesInt = c.campOtroTipoOperacionesInt,
                               campNombreCompletoFamiliarA = c.campNombreCompletoFamiliarA,
                               campParentescoFamiliarA = c.campParentescoFamiliarA,
                               campCiudadFamiliarA = c.campCiudadFamiliarA,
                               campTelefonoFamiliarA = c.campTelefonoFamiliarA,
                               campNombreCompletoFamiliarB = c.campNombreCompletoFamiliarB,
                               campParentescoFamiliarB = c.campParentescoFamiliarB,
                               campCiudadFamiliarB = c.campCiudadFamiliarB,
                               campTelefonoFamiliarB = c.campTelefonoFamiliarB,
                               campNombreCompletoReferenciaA = c.campNombreCompletoReferenciaA,
                               campRelacionReferenciaA = c.campRelacionReferenciaA,
                               campCiudadReferenciaA = c.campCiudadReferenciaA,
                               campTelefonoReferenciaA = c.campTelefonoReferenciaA,
                               campNombreCompletoReferenciaB = c.campNombreCompletoReferenciaB,
                               campRelacionReferenciaB = c.campRelacionReferenciaB,
                               campCiudadReferenciaB = c.campCiudadReferenciaB,
                               campTelefonoReferenciaB = c.campTelefonoReferenciaB
                           }).FirstOrDefault();

                if (Cli == null)
                    return null;

                string rta = CalcularTipoCliente(Cli.idCliente);
                Productos prod = new Productos();
                
                //Calcular Rendimientos
                var ptos = (from c in bd.ProductosClientes 
                           where c.idCliente==Cli.idCliente && c.Producto.TipoProducto.idTipoProducto==2
                           select c.idProductoCliente).ToList();

                foreach (var item in ptos)
	                {
                        prod.CalcularRendimientos(item);
	                }
                
                //Pagar Cuotas de los créditos
                var ptosCred = (from c in bd.ProductosClientes
                                where c.idCliente == Cli.idCliente && c.Producto.idTipoProducto == 1 && (c.Producto.idProducto > 11 || c.Producto.idProducto < 8)
                                select c.idProductoCliente).ToList();

                foreach (var item in ptosCred)
                {
                    prod.PagarCoutasCredito(item);
                }



                return new JavaScriptSerializer().Serialize(Cli);
            }
        }

        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public string GetCliente(int idCliente)
        {
            using (Banking_MSEntities bd = new Banking_MSEntities())
            {
                var Cli = (from c in bd.Clientes
                           where c.idCliente == idCliente
                           select new
                           {
                               campFechaSolicitud = c.campFechaSolicitud,
                               campSucursal = c.campSucursal,
                               campTipoSolicitud = c.campTipoSolicitud,
                               campTipoVinculo = c.campTipoVinculo,
                               campTipoCuenta = c.campTipoCuenta,
                               campNombreA = c.campNombreA,
                               campNombreB = c.campNombreB,
                               campApellidoA = c.campApellidoA,
                               campApellidoB = c.campApellidoB,
                               campSexo = c.campSexo,
                               campDiaNacimiento = c.campDiaNacimiento,
                               campMesNacimiento = c.campMesNacimiento,
                               campAnoNacimiento = c.campAnoNacimiento,
                               campPaisNacimiento = c.campPaisNacimiento,
                               campCiudadNacimiento = c.campCiudadNacimiento,
                               campDepartNacimiento = c.campDepartNacimiento,
                               campNacionalidad = c.campNacionalidad,
                               campTipoIdentificacion = c.campTipoIdentificacion,
                               campOtroTipoIdentificacion = c.campOtroTipoIdentificacion,
                               campNumeroIdentificacion = c.campNumeroIdentificacion,
                               campCiudadIdentificacion = c.campCiudadIdentificacion,
                               campCelular = c.campCelular,
                               campCorreo = c.campCorreo,
                               campEstadoCivil = c.campEstadoCivil,
                               campNivelEstudios = c.campNivelEstudios,
                               campTituloProfesional = c.campTituloProfesional,
                               campDireccionResidencia = c.campDireccionResidencia,
                               campPaisResidencia = c.campPaisResidencia,
                               campDepartamentoResidencia = c.campDepartamentoResidencia,
                               campCiudadResidencia = c.campCiudadResidencia,
                               campTelefonoResidencia = c.campTelefonoResidencia,
                               campDireccionOficina = c.campDireccionOficina,
                               campPaisOficina = c.campPaisOficina,
                               campDepartamentoOficina = c.campDepartamentoOficina,
                               campCiudadOficina = c.campCiudadOficina,
                               campTelefonoOficina = c.campTelefonoOficina,
                               campDondeCorrespondencia = c.campDondeCorrespondencia,
                               campComoEnviarInfo = c.campComoEnviarInfo,
                               campTipoVivienda = c.campTipoVivienda,
                               campOtroTipoVivienda = c.campOtroTipoVivienda,
                               campValorVivienda = c.campValorVivienda,
                               campPersonasCargo = c.campPersonasCargo,
                               campTieneConyugue = c.campTieneConyugue,
                               campNombreAConyugue = c.campNombreAConyugue,
                               campNombreBConyugue = c.campNombreBConyugue,
                               campApellidoAConyugue = c.campApellidoAConyugue,
                               campApellidoBConyugue = c.campApellidoBConyugue,
                               campConyugueTipoIdentificacion = c.campConyugueTipoIdentificacion,
                               campConyugueOtroTipoIdentificacion = c.campConyugueOtroTipoIdentificacion,
                               campConyugueNumeroIdentificacion = c.campConyugueNumeroIdentificacion,
                               campConyugueCiudadIdentificacion = c.campConyugueCiudadIdentificacion,
                               campTieneRepresentante = c.campTieneRepresentante,
                               campNombreARepresentante = c.campNombreARepresentante,
                               campNombreBRepresentante = c.campNombreBRepresentante,
                               campApellidoARepresentante = c.campApellidoARepresentante,
                               campApellidoBRepresentante = c.campApellidoBRepresentante,
                               campRepresentanteTipoIdentificacion = c.campRepresentanteTipoIdentificacion,
                               campRepresentanteOtroTipoIdentificacion = c.campRepresentanteOtroTipoIdentificacion,
                               campRepresentanteNumeroIdentificacion = c.campRepresentanteNumeroIdentificacion,
                               campRepresentanteCiudadIdentificacion = c.campRepresentanteCiudadIdentificacion,
                               campVinculoLaboral = c.campVinculoLaboral,
                               campNombreEmpresa = c.campNombreEmpresa,
                               campEsSocioEmpresa = c.campEsSocioEmpresa,
                               campLaboralCargo = c.campLaboralCargo,
                               campFechaInicioLaboral = c.campFechaInicioLaboral,
                               campLaboralActividadEmpresa = c.campLaboralActividadEmpresa,
                               campPersonaExpuesta = c.campPersonaExpuesta,
                               campIngresosMensuales = c.campIngresosMensuales,
                               campEgresosMensuales = c.campEgresosMensuales,
                               campTotalActivo = c.campTotalActivo,
                               campTotalPasivo = c.campTotalPasivo,
                               campVentasAnuales = c.campVentasAnuales,
                               campTextOtrosIngresosMensuales = c.campTextOtrosIngresosMensuales,
                               campTextProcedenciaIngresos = c.campTextProcedenciaIngresos,
                               campDeclaraRenta = c.campDeclaraRenta,
                               campRealizaOperacionesInt = c.campRealizaOperacionesInt,
                               campTipoOperacionesInt0 = c.campTipoOperacionesInt0,
                               campTipoOperacionesInt1 = c.campTipoOperacionesInt1,
                               campTipoOperacionesInt2 = c.campTipoOperacionesInt2,
                               campTipoOperacionesInt3 = c.campTipoOperacionesInt3,
                               campTipoOperacionesInt4 = c.campTipoOperacionesInt4,
                               campOtroTipoOperacionesInt = c.campOtroTipoOperacionesInt,
                               campNombreCompletoFamiliarA = c.campNombreCompletoFamiliarA,
                               campParentescoFamiliarA = c.campParentescoFamiliarA,
                               campCiudadFamiliarA = c.campCiudadFamiliarA,
                               campTelefonoFamiliarA = c.campTelefonoFamiliarA,
                               campNombreCompletoFamiliarB = c.campNombreCompletoFamiliarB,
                               campParentescoFamiliarB = c.campParentescoFamiliarB,
                               campCiudadFamiliarB = c.campCiudadFamiliarB,
                               campTelefonoFamiliarB = c.campTelefonoFamiliarB,
                               campNombreCompletoReferenciaA = c.campNombreCompletoReferenciaA,
                               campRelacionReferenciaA = c.campRelacionReferenciaA,
                               campCiudadReferenciaA = c.campCiudadReferenciaA,
                               campTelefonoReferenciaA = c.campTelefonoReferenciaA,
                               campNombreCompletoReferenciaB = c.campNombreCompletoReferenciaB,
                               campRelacionReferenciaB = c.campRelacionReferenciaB,
                               campCiudadReferenciaB = c.campCiudadReferenciaB,
                               campTelefonoReferenciaB = c.campTelefonoReferenciaB
                           }).Single();

                return new JavaScriptSerializer().Serialize(Cli);
            }
        }

        /// <summary>
        /// Crea un cliente con los datos basicos
        /// </summary>
        /// <param name="campNombreA"></param>
        /// <param name="campNombreB"></param>
        /// <param name="campApellidoA"></param>
        /// <param name="campApellidoB"></param>
        /// <param name="campTipoIdentificacion"></param>
        /// <param name="campOtroTipoIdentificacion"></param>
        /// <param name="campNumeroIdentificacion"></param>
        /// <param name="campCorreo"></param>
        /// <returns>string con el identificador del cliente, si falla retrona "0"</returns>
        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public string CrearClienteEstandar(
                        string campNombreA,
                        string campNombreB,
                        string campApellidoA,
                        string campApellidoB,
                        byte campTipoIdentificacion,
                        string campOtroTipoIdentificacion,
                        string campNumeroIdentificacion,
                        string campCorreo,
                        string Usuario,
                        string Clave,
                        decimal saldoInicial,
                        byte campTipoSolicitud)
        {
            Cliente Cli = new Cliente();
            Cli.campNombreA = campNombreA;
            Cli.campNombreB = campNombreB;
            Cli.campApellidoA = campApellidoA;
            Cli.campApellidoB = campApellidoB;
            Cli.campTipoIdentificacion = campTipoIdentificacion;
            Cli.campOtroTipoIdentificacion = campOtroTipoIdentificacion;
            Cli.campNumeroIdentificacion = campNumeroIdentificacion;
            Cli.campTipoSolicitud = campTipoSolicitud;
            Cli.Usuario = Usuario;
            Cli.Clave = Clave;
            Cli.idTipoCliente = 1;
            Cli.campFechaSolicitud = DateTime.Now;
            using (Banking_MSEntities bd = new Banking_MSEntities())
            {
                bd.Clientes.AddObject(Cli);
                bd.SaveChanges();
            }

            Productos pro = new Productos();
            if (campTipoSolicitud == 1)
            {
                pro.CrearCuentaAhorros(Cli.idCliente, 2, saldoInicial, string.Empty , 0);
            }
            else
            {
                if (campTipoSolicitud == 2)
                {
                    pro.CrearCuentaCorriente(Cli.idCliente, 2, saldoInicial, string.Empty,0);
                }
            }

            return new JavaScriptSerializer().Serialize(Cli.idCliente);
        }

        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public string ActualizarDatosPersonales(
            int idCliente,
            string campSucursal,
            byte campTipoVinculo,
            byte campTipoCuenta,
            string campNombreA,
            string campNombreB,
            string campApellidoA,
            string campApellidoB,
            byte campSexo,
            byte campDiaNacimiento,
            byte campMesNacimiento,
            byte campAnoNacimiento,
            string campPaisNacimiento,
            string campCiudadNacimiento,
            string campDepartNacimiento,
            string campNacionalidad,
            byte campTipoIdentificacion,
            string campOtroTipoIdentificacion,
            string campNumeroIdentificacion,
            string campCiudadIdentificacion,
            string campCelular,
            string campCorreo,
            byte campEstadoCivil,
            byte campNivelEstudios,
            string campTituloProfesional)
        {
            try
            {
                using (Banking_MSEntities bd = new Banking_MSEntities())
                {
                    var Cli = (from c in bd.Clientes
                               where c.idCliente == idCliente
                               select c).Single();

                    Cli.campFechaSolicitud = DateTime.Now;
                    Cli.campSucursal = campSucursal;
                    Cli.campTipoVinculo = campTipoVinculo;
                    Cli.campTipoCuenta = campTipoCuenta;
                    Cli.campNombreA = campNombreA;
                    Cli.campNombreB = campNombreB;
                    Cli.campApellidoA = campApellidoA;
                    Cli.campApellidoB = campApellidoB;
                    Cli.campSexo = campSexo;
                    Cli.campDiaNacimiento = campDiaNacimiento;
                    Cli.campMesNacimiento = campMesNacimiento;
                    Cli.campAnoNacimiento = campAnoNacimiento;
                    Cli.campPaisNacimiento = campPaisNacimiento;
                    Cli.campCiudadNacimiento = campCiudadNacimiento;
                    Cli.campDepartNacimiento = campDepartNacimiento;
                    Cli.campNacionalidad = campNacionalidad;
                    Cli.campTipoIdentificacion = campTipoIdentificacion;
                    Cli.campOtroTipoIdentificacion = campOtroTipoIdentificacion;
                    Cli.campNumeroIdentificacion = campNumeroIdentificacion;
                    Cli.campCiudadIdentificacion = campCiudadIdentificacion;
                    Cli.campCelular = campCelular;
                    Cli.campCorreo = campCorreo;
                    Cli.campEstadoCivil = campEstadoCivil;
                    Cli.campNivelEstudios = campNivelEstudios;
                    Cli.campTituloProfesional = campTituloProfesional;
                    bd.SaveChanges();
                }

                return new JavaScriptSerializer().Serialize("Success");
            }
            catch (Exception e)
            {
                return new JavaScriptSerializer().Serialize(e);
            }
        }

        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public string ActualizarDatosContacto(
                int idCliente,
                string campDireccionResidencia,
                string campPaisResidencia,
                string campDepartamentoResidencia,
                string campCiudadResidencia,
                string campTelefonoResidencia,
                string campDireccionOficina,
                string campPaisOficina,
                string campDepartamentoOficina,
                string campCiudadOficina,
                string campTelefonoOficina,
                string campDondeCorrespondencia,
                string campComoEnviarInfo,
                string campTipoVivienda,
                string campOtroTipoVivienda,
                string campValorVivienda,
                string campPersonasCargo)
        {
            try
            {
                using (Banking_MSEntities bd = new Banking_MSEntities())
                {
                    var Cli = (from c in bd.Clientes
                               where c.idCliente == idCliente
                               select c).Single();

                    Cli.campDireccionResidencia = campDireccionResidencia;
                    Cli.campPaisResidencia = campPaisResidencia;
                    Cli.campDepartamentoResidencia = campDepartamentoResidencia;
                    Cli.campCiudadResidencia = campCiudadResidencia;
                    Cli.campTelefonoResidencia = campTelefonoResidencia;
                    Cli.campDireccionOficina = campDireccionOficina;
                    Cli.campPaisOficina = campPaisOficina;
                    Cli.campDepartamentoOficina = campDepartamentoOficina;
                    Cli.campCiudadOficina = campCiudadOficina;
                    Cli.campTelefonoOficina = campTelefonoOficina;
                    Cli.campDondeCorrespondencia = campDondeCorrespondencia;
                    Cli.campComoEnviarInfo = campComoEnviarInfo;
                    Cli.campTipoVivienda = campTipoVivienda;
                    Cli.campOtroTipoVivienda = campOtroTipoVivienda;
                    Cli.campValorVivienda = campValorVivienda;
                    Cli.campPersonasCargo = campPersonasCargo;

                    bd.SaveChanges();
                }

                return new JavaScriptSerializer().Serialize("Success");
            }
            catch (Exception e)
            {
                return new JavaScriptSerializer().Serialize(e);
            }
        }

        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public string ActualizarInformacionConyougue(
            int idCliente,
            bool campTieneConyugue,
            string campNombreAConyugue,
            string campNombreBConyugue,
            string campApellidoAConyugue,
            string campApellidoBConyugue,
            byte? campConyugueTipoIdentificacion,
            string campConyugueOtroTipoIdentificacion,
            string campConyugueNumeroIdentificacion,
            string campConyugueCiudadIdentificacion)
        {
            try
            {
                using (Banking_MSEntities bd = new Banking_MSEntities())
                {
                    var Cli = (from c in bd.Clientes
                               where c.idCliente == idCliente
                               select c).Single();

                    Cli.campTieneConyugue = campTieneConyugue;
                    Cli.campNombreAConyugue = campNombreAConyugue;
                    Cli.campNombreBConyugue = campNombreBConyugue;
                    Cli.campApellidoAConyugue = campApellidoAConyugue;
                    Cli.campApellidoBConyugue = campApellidoBConyugue;
                    Cli.campConyugueTipoIdentificacion = campConyugueTipoIdentificacion;
                    Cli.campConyugueOtroTipoIdentificacion = campConyugueOtroTipoIdentificacion;
                    Cli.campConyugueNumeroIdentificacion = campConyugueNumeroIdentificacion;
                    Cli.campConyugueCiudadIdentificacion = campConyugueCiudadIdentificacion;

                    bd.SaveChanges();
                }

                return new JavaScriptSerializer().Serialize("Success");
            }
            catch (Exception e)
            {
                return new JavaScriptSerializer().Serialize(e);
            }
        }

        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public string ActualizarRepresentanteoApoderado(
            int idCliente,
            bool campTieneRepresentante,
            string campNombreARepresentante,
            string campNombreBRepresentante,
            string campApellidoARepresentante,
            string campApellidoBRepresentante,
            byte campRepresentanteTipoIdentificacion,
            string campRepresentanteOtroTipoIdentificacion,
            string campRepresentanteNumeroIdentificacion,
            string campRepresentanteCiudadIdentificacion)
        {
            try
            {
                using (Banking_MSEntities bd = new Banking_MSEntities())
                {
                    var Cli = (from c in bd.Clientes
                               where c.idCliente == idCliente
                               select c).Single();

                    Cli.campTieneRepresentante = campTieneRepresentante;
                    Cli.campNombreARepresentante = campNombreARepresentante;
                    Cli.campNombreBRepresentante = campNombreBRepresentante;
                    Cli.campApellidoARepresentante = campApellidoARepresentante;
                    Cli.campApellidoBRepresentante = campApellidoBRepresentante;
                    Cli.campRepresentanteTipoIdentificacion = campRepresentanteTipoIdentificacion;
                    Cli.campRepresentanteOtroTipoIdentificacion = campRepresentanteOtroTipoIdentificacion;
                    Cli.campRepresentanteNumeroIdentificacion = campRepresentanteNumeroIdentificacion;
                    Cli.campRepresentanteCiudadIdentificacion = campRepresentanteCiudadIdentificacion;
                    bd.SaveChanges();
                }

                return new JavaScriptSerializer().Serialize("Success");
            }
            catch (Exception e)
            {
                return new JavaScriptSerializer().Serialize(e);
            }
        }

        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public string ActualizarInformacionEconomica(
                int idCliente,
                byte campVinculoLaboral,
                string campNombreEmpresa,
                bool campEsSocioEmpresa,
                string campLaboralCargo,
                string campFechaInicioLaboral,
                string campLaboralActividadEmpresa,
                byte campPersonaExpuesta,
                decimal campIngresosMensuales,
                decimal campEgresosMensuales,
                decimal campTotalActivo,
                decimal campTotalPasivo,
                decimal? campVentasAnuales,
                string campTextOtrosIngresosMensuales,
                string campTextProcedenciaIngresos,
                byte campDeclaraRenta,
                bool campRealizaOperacionesInt,
                bool campTipoOperacionesInt0,
                bool campTipoOperacionesInt1,
                bool campTipoOperacionesInt2,
                bool campTipoOperacionesInt3,
                bool campTipoOperacionesInt4,
                string campOtroTipoOperacionesInt)
        {
            try
            {
                using (Banking_MSEntities bd = new Banking_MSEntities())
                {
                    var Cli = (from c in bd.Clientes
                               where c.idCliente == idCliente
                               select c).Single();

                    Cli.campVinculoLaboral = campVinculoLaboral;
                    Cli.campNombreEmpresa = campNombreEmpresa;
                    Cli.campEsSocioEmpresa = campEsSocioEmpresa;
                    Cli.campLaboralCargo = campLaboralCargo;
                    Cli.campFechaInicioLaboral = campFechaInicioLaboral;
                    Cli.campLaboralActividadEmpresa = campLaboralActividadEmpresa;
                    Cli.campPersonaExpuesta = campPersonaExpuesta;
                    Cli.campIngresosMensuales = campIngresosMensuales;
                    Cli.campEgresosMensuales = campEgresosMensuales;
                    Cli.campTotalActivo = campTotalActivo;
                    Cli.campTotalPasivo = campTotalPasivo;
                    Cli.campVentasAnuales = campVentasAnuales;
                    Cli.campTextOtrosIngresosMensuales = campTextOtrosIngresosMensuales;
                    Cli.campTextProcedenciaIngresos = campTextProcedenciaIngresos;
                    Cli.campDeclaraRenta = campDeclaraRenta;
                    Cli.campRealizaOperacionesInt = campRealizaOperacionesInt;
                    Cli.campTipoOperacionesInt0 = campTipoOperacionesInt0;
                    Cli.campTipoOperacionesInt1 = campTipoOperacionesInt1;
                    Cli.campTipoOperacionesInt2 = campTipoOperacionesInt2;
                    Cli.campTipoOperacionesInt3 = campTipoOperacionesInt3;
                    Cli.campTipoOperacionesInt4 = campTipoOperacionesInt4;
                    Cli.campOtroTipoOperacionesInt = campOtroTipoOperacionesInt;

                    int tipoCli = (int)(from c in bd.TipoClientes
                                        where c.NivelIngresos <= campIngresosMensuales
                                        orderby c.NivelIngresos descending
                                        select c.idTipoCliente).FirstOrDefault();

                    Cli.idTipoCliente = tipoCli;

                    bd.SaveChanges();
                }

                string tipoCliente = CalcularTipoCliente(idCliente);

                return new JavaScriptSerializer().Serialize("Success");
            }
            catch (Exception e)
            {
                return new JavaScriptSerializer().Serialize(e);
            }
        }

        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public string ActualizarReferencias(
            int idCliente,
            string campNombreCompletoFamiliarA,
            string campParentescoFamiliarA,
            string campCiudadFamiliarA,
            string campTelefonoFamiliarA,
            string campNombreCompletoFamiliarB,
            string campParentescoFamiliarB,
            string campCiudadFamiliarB,
            string campTelefonoFamiliarB,
            string campNombreCompletoReferenciaA,
            string campRelacionReferenciaA,
            string campCiudadReferenciaA,
            string campTelefonoReferenciaA,
            string campNombreCompletoReferenciaB,
            string campRelacionReferenciaB,
            string campCiudadReferenciaB,
            string campTelefonoReferenciaB)
        {
            try
            {
                using (Banking_MSEntities bd = new Banking_MSEntities())
                {
                    var Cli = (from c in bd.Clientes
                               where c.idCliente == idCliente
                               select c).Single();

                    Cli.campNombreCompletoFamiliarA = campNombreCompletoFamiliarA;
                    Cli.campParentescoFamiliarA = campParentescoFamiliarA;
                    Cli.campCiudadFamiliarA = campCiudadFamiliarA;
                    Cli.campTelefonoFamiliarA = campTelefonoFamiliarA;
                    Cli.campNombreCompletoFamiliarB = campNombreCompletoFamiliarB;
                    Cli.campParentescoFamiliarB = campParentescoFamiliarB;
                    Cli.campCiudadFamiliarB = campCiudadFamiliarB;
                    Cli.campTelefonoFamiliarB = campTelefonoFamiliarB;
                    Cli.campNombreCompletoReferenciaA = campNombreCompletoReferenciaA;
                    Cli.campRelacionReferenciaA = campRelacionReferenciaA;
                    Cli.campCiudadReferenciaA = campCiudadReferenciaA;
                    Cli.campTelefonoReferenciaA = campTelefonoReferenciaA;
                    Cli.campNombreCompletoReferenciaB = campNombreCompletoReferenciaB;
                    Cli.campRelacionReferenciaB = campRelacionReferenciaB;
                    Cli.campCiudadReferenciaB = campCiudadReferenciaB;
                    Cli.campTelefonoReferenciaB = campTelefonoReferenciaB;
                    bd.SaveChanges();
                }

                return new JavaScriptSerializer().Serialize("Success");
            }
            catch (Exception e)
            {
                return new JavaScriptSerializer().Serialize(e);
            }
        }

        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public string CrearCliente(
                    DateTime campFechaSolicitud,
                    string campSucursal,
                    byte campTipoSolicitud,
                    byte campTipoVinculo,
                    byte campTipoCuenta,
                    string campNombreA,
                    string campNombreB,
                    string campApellidoA,
                    string campApellidoB,
                    byte campSexo,
                    byte campDiaNacimiento,
                    byte campMesNacimiento,
                    byte campAnoNacimiento,
                    string campPaisNacimiento,
                    string campCiudadNacimiento,
                    string campDepartNacimiento,
                    string campNacionalidad,
                    byte campTipoIdentificacion,
                    string campOtroTipoIdentificacion,
                    string campNumeroIdentificacion,
                    string campCiudadIdentificacion,
                    string campCelular,
                    string campCorreo,
                    byte campEstadoCivil,
                    byte campNivelEstudios,
                    string campTituloProfesional,
                    string campDireccionResidencia,
                    string campPaisResidencia,
                    string campDepartamentoResidencia,
                    string campCiudadResidencia,
                    string campTelefonoResidencia,
                    string campDireccionOficina,
                    string campPaisOficina,
                    string campDepartamentoOficina,
                    string campCiudadOficina,
                    string campTelefonoOficina,
                    string campDondeCorrespondencia,
                    string campComoEnviarInfo,
                    string campTipoVivienda,
                    string campOtroTipoVivienda,
                    string campValorVivienda,
                    string campPersonasCargo,
                    bool campTieneConyugue,
                    string campNombreAConyugue,
                    string campNombreBConyugue,
                    string campApellidoAConyugue,
                    string campApellidoBConyugue,
                    byte campConyugueTipoIdentificacion,
                    string campConyugueOtroTipoIdentificacion,
                    string campConyugueNumeroIdentificacion,
                    string campConyugueCiudadIdentificacion,
                    bool campTieneRepresentante,
                    string campNombreARepresentante,
                    string campNombreBRepresentante,
                    string campApellidoARepresentante,
                    string campApellidoBRepresentante,
                    byte campRepresentanteTipoIdentificacion,
                    string campRepresentanteOtroTipoIdentificacion,
                    string campRepresentanteNumeroIdentificacion,
                    string campRepresentanteCiudadIdentificacion,
                    byte campVinculoLaboral,
                    string campNombreEmpresa,
                    bool campEsSocioEmpresa,
                    string campLaboralCargo,
                    string campFechaInicioLaboral,
                    string campLaboralActividadEmpresa,
                    byte campPersonaExpuesta,
                    decimal campIngresosMensuales,
                    decimal campEgresosMensuales,
                    decimal campTotalActivo,
                    decimal campTotalPasivo,
                    decimal campVentasAnuales,
                    string campTextOtrosIngresosMensuales,
                    string campTextProcedenciaIngresos,
                    byte campDeclaraRenta,
                    bool campRealizaOperacionesInt,
                    bool campTipoOperacionesInt0,
                    bool campTipoOperacionesInt1,
                    bool campTipoOperacionesInt2,
                    bool campTipoOperacionesInt3,
                    bool campTipoOperacionesInt4,
                    string campOtroTipoOperacionesInt,
                    string campNombreCompletoFamiliarA,
                    string campParentescoFamiliarA,
                    string campCiudadFamiliarA,
                    string campTelefonoFamiliarA,
                    string campNombreCompletoFamiliarB,
                    string campParentescoFamiliarB,
                    string campCiudadFamiliarB,
                    string campTelefonoFamiliarB,
                    string campNombreCompletoReferenciaA,
                    string campRelacionReferenciaA,
                    string campCiudadReferenciaA,
                    string campTelefonoReferenciaA,
                    string campNombreCompletoReferenciaB,
                    string campRelacionReferenciaB,
                    string campCiudadReferenciaB,
                    string campTelefonoReferenciaB,
                    string Usuario,
                    string Clave,                        
                    decimal saldoInicial
                    )
        {
            Cliente Cli = new Cliente();
            Cli.campFechaSolicitud = campFechaSolicitud;
            Cli.campSucursal = campSucursal;
            Cli.campTipoSolicitud = campTipoSolicitud;
            Cli.campTipoVinculo = campTipoVinculo;
            Cli.campTipoCuenta = campTipoCuenta;
            Cli.campNombreA = campNombreA;
            Cli.campNombreB = campNombreB;
            Cli.campApellidoA = campApellidoA;
            Cli.campApellidoB = campApellidoB;
            Cli.campSexo = campSexo;
            Cli.campDiaNacimiento = campDiaNacimiento;
            Cli.campMesNacimiento = campMesNacimiento;
            Cli.campAnoNacimiento = campAnoNacimiento;
            Cli.campPaisNacimiento = campPaisNacimiento;
            Cli.campCiudadNacimiento = campCiudadNacimiento;
            Cli.campDepartNacimiento = campDepartNacimiento;
            Cli.campNacionalidad = campNacionalidad;
            Cli.campTipoIdentificacion = campTipoIdentificacion;
            Cli.campOtroTipoIdentificacion = campOtroTipoIdentificacion;
            Cli.campNumeroIdentificacion = campNumeroIdentificacion;
            Cli.campCiudadIdentificacion = campCiudadIdentificacion;
            Cli.campCelular = campCelular;
            Cli.campCorreo = campCorreo;
            Cli.campEstadoCivil = campEstadoCivil;
            Cli.campNivelEstudios = campNivelEstudios;
            Cli.campTituloProfesional = campTituloProfesional;
            Cli.campDireccionResidencia = campDireccionResidencia;
            Cli.campPaisResidencia = campPaisResidencia;
            Cli.campDepartamentoResidencia = campDepartamentoResidencia;
            Cli.campCiudadResidencia = campCiudadResidencia;
            Cli.campTelefonoResidencia = campTelefonoResidencia;
            Cli.campDireccionOficina = campDireccionOficina;
            Cli.campPaisOficina = campPaisOficina;
            Cli.campDepartamentoOficina = campDepartamentoOficina;
            Cli.campCiudadOficina = campCiudadOficina;
            Cli.campTelefonoOficina = campTelefonoOficina;
            Cli.campDondeCorrespondencia = campDondeCorrespondencia;
            Cli.campComoEnviarInfo = campComoEnviarInfo;
            Cli.campTipoVivienda = campTipoVivienda;
            Cli.campOtroTipoVivienda = campOtroTipoVivienda;
            Cli.campValorVivienda = campValorVivienda;
            Cli.campPersonasCargo = campPersonasCargo;
            Cli.campTieneConyugue = campTieneConyugue;
            Cli.campNombreAConyugue = campNombreAConyugue;
            Cli.campNombreBConyugue = campNombreBConyugue;
            Cli.campApellidoAConyugue = campApellidoAConyugue;
            Cli.campApellidoBConyugue = campApellidoBConyugue;
            Cli.campConyugueTipoIdentificacion = campConyugueTipoIdentificacion;
            Cli.campConyugueOtroTipoIdentificacion = campConyugueOtroTipoIdentificacion;
            Cli.campConyugueNumeroIdentificacion = campConyugueNumeroIdentificacion;
            Cli.campConyugueCiudadIdentificacion = campConyugueCiudadIdentificacion;
            Cli.campTieneRepresentante = campTieneRepresentante;
            Cli.campNombreARepresentante = campNombreARepresentante;
            Cli.campNombreBRepresentante = campNombreBRepresentante;
            Cli.campApellidoARepresentante = campApellidoARepresentante;
            Cli.campApellidoBRepresentante = campApellidoBRepresentante;
            Cli.campRepresentanteTipoIdentificacion = campRepresentanteTipoIdentificacion;
            Cli.campRepresentanteOtroTipoIdentificacion = campRepresentanteOtroTipoIdentificacion;
            Cli.campRepresentanteNumeroIdentificacion = campRepresentanteNumeroIdentificacion;
            Cli.campRepresentanteCiudadIdentificacion = campRepresentanteCiudadIdentificacion;
            Cli.campVinculoLaboral = campVinculoLaboral;
            Cli.campNombreEmpresa = campNombreEmpresa;
            Cli.campEsSocioEmpresa = campEsSocioEmpresa;
            Cli.campLaboralCargo = campLaboralCargo;
            Cli.campFechaInicioLaboral = campFechaInicioLaboral;
            Cli.campLaboralActividadEmpresa = campLaboralActividadEmpresa;
            Cli.campPersonaExpuesta = campPersonaExpuesta;
            Cli.campIngresosMensuales = campIngresosMensuales;
            Cli.campEgresosMensuales = campEgresosMensuales;
            Cli.campTotalActivo = campTotalActivo;
            Cli.campTotalPasivo = campTotalPasivo;
            Cli.campVentasAnuales = campVentasAnuales;
            Cli.campTextOtrosIngresosMensuales = campTextOtrosIngresosMensuales;
            Cli.campTextProcedenciaIngresos = campTextProcedenciaIngresos;
            Cli.campDeclaraRenta = campDeclaraRenta;
            Cli.campRealizaOperacionesInt = campRealizaOperacionesInt;
            Cli.campTipoOperacionesInt0 = campTipoOperacionesInt0;
            Cli.campTipoOperacionesInt1 = campTipoOperacionesInt1;
            Cli.campTipoOperacionesInt2 = campTipoOperacionesInt2;
            Cli.campTipoOperacionesInt3 = campTipoOperacionesInt3;
            Cli.campTipoOperacionesInt4 = campTipoOperacionesInt4;
            Cli.campOtroTipoOperacionesInt = campOtroTipoOperacionesInt;
            Cli.campNombreCompletoFamiliarA = campNombreCompletoFamiliarA;
            Cli.campParentescoFamiliarA = campParentescoFamiliarA;
            Cli.campCiudadFamiliarA = campCiudadFamiliarA;
            Cli.campTelefonoFamiliarA = campTelefonoFamiliarA;
            Cli.campNombreCompletoFamiliarB = campNombreCompletoFamiliarB;
            Cli.campParentescoFamiliarB = campParentescoFamiliarB;
            Cli.campCiudadFamiliarB = campCiudadFamiliarB;
            Cli.campTelefonoFamiliarB = campTelefonoFamiliarB;
            Cli.campNombreCompletoReferenciaA = campNombreCompletoReferenciaA;
            Cli.campRelacionReferenciaA = campRelacionReferenciaA;
            Cli.campCiudadReferenciaA = campCiudadReferenciaA;
            Cli.campTelefonoReferenciaA = campTelefonoReferenciaA;
            Cli.campNombreCompletoReferenciaB = campNombreCompletoReferenciaB;
            Cli.campRelacionReferenciaB = campRelacionReferenciaB;
            Cli.campCiudadReferenciaB = campCiudadReferenciaB;
            Cli.campTelefonoReferenciaB = campTelefonoReferenciaB;
            Cli.idTipoCliente = 1;
            Cli.Usuario = Usuario;
            Cli.Clave = Clave;

            using (Banking_MSEntities bd = new Banking_MSEntities())
            {
                bd.Clientes.AddObject(Cli);
                bd.SaveChanges();
            }

            Productos pro = new Productos();
            if (campTipoSolicitud == 1)
            {
                pro.CrearCuentaAhorros(Cli.idCliente, 2, saldoInicial, string.Empty,0);
            }
            else
            {
                if (campTipoSolicitud == 2)
                {
                    pro.CrearCuentaCorriente(Cli.idCliente, 2, saldoInicial, string.Empty,0);
                }
            }

            string var = CalcularTipoCliente(Cli.idCliente);
            return new JavaScriptSerializer().Serialize(Cli.idCliente);
        }

        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public string ValidarInformacionDigitada(int idCliente)
        {
            using (Banking_MSEntities bd = new Banking_MSEntities())
            {
                Cliente cli = (from c in bd.Clientes
                               where c.idCliente == idCliente
                               select c).Single();

                if (cli != null)
                {
                    return new JavaScriptSerializer().Serialize(Validar(cli));
                }
                else
                {
                    return new JavaScriptSerializer().Serialize(false);
                }
            }
        }

        private static bool Validar(Cliente cli)
        {
            ////Datos Contacto

            if (string.IsNullOrWhiteSpace(cli.campDireccionResidencia))
            {
                return false;
            }

            if (string.IsNullOrWhiteSpace(cli.campPaisResidencia))
            {
                return false;
            }

            if (string.IsNullOrWhiteSpace(cli.campDepartamentoResidencia))
            {
                return false;
            }

            if (string.IsNullOrWhiteSpace(cli.campCiudadResidencia))
            {
                return false;
            }

            if (string.IsNullOrWhiteSpace(cli.campTelefonoResidencia))
            {
                return false;
            }

            if (string.IsNullOrWhiteSpace(cli.campDireccionOficina))
            {
                return false;
            }

            if (string.IsNullOrWhiteSpace(cli.campPaisOficina))
            {
                return false;
            }

            if (string.IsNullOrWhiteSpace(cli.campDepartamentoOficina))
            {
                return false;
            }

            if (string.IsNullOrWhiteSpace(cli.campCiudadOficina))
            {
                return false;
            }

            if (string.IsNullOrWhiteSpace(cli.campTelefonoOficina))
            {
                return false;
            }

            if (string.IsNullOrWhiteSpace(cli.campDondeCorrespondencia))
            {
                return false;
            }

            if (string.IsNullOrWhiteSpace(cli.campComoEnviarInfo))
            {
                return false;
            }

            if (string.IsNullOrWhiteSpace(cli.campTipoVivienda))
            {
                return false;
            }

            if (cli.campTipoVivienda == "5" && string.IsNullOrWhiteSpace(cli.campOtroTipoVivienda))
            {
                return false;
            }

            if ((cli.campTipoVivienda == "1" || cli.campTipoVivienda == "2" || cli.campTipoVivienda == "3") && string.IsNullOrWhiteSpace(cli.campValorVivienda))
            {
                return false;
            }

            if (string.IsNullOrWhiteSpace(cli.campPersonasCargo))
            {
                return false;
            }

            ////Información Cónyugue

            if (cli.campTieneConyugue != null && cli.campTieneConyugue.Value)
            {
                if (string.IsNullOrWhiteSpace(cli.campNombreAConyugue))
                {
                    return false;
                }

                if (string.IsNullOrWhiteSpace(cli.campNombreBConyugue))
                {
                    return false;
                }

                if (string.IsNullOrWhiteSpace(cli.campApellidoAConyugue))
                {
                    return false;
                }

                if (string.IsNullOrWhiteSpace(cli.campApellidoBConyugue))
                {
                    return false;
                }

                if (cli.campConyugueTipoIdentificacion == null)
                {
                    return false;
                }

                if (cli.campConyugueTipoIdentificacion.Value == 5 && string.IsNullOrWhiteSpace(cli.campConyugueOtroTipoIdentificacion))
                {
                    return false;
                }

                if (string.IsNullOrWhiteSpace(cli.campConyugueNumeroIdentificacion))
                {
                    return false;
                }

                if (string.IsNullOrWhiteSpace(cli.campConyugueCiudadIdentificacion))
                {
                    return false;
                }
            }

            ////Información Representante o Apoderado

            if (cli.campTieneRepresentante != null && cli.campTieneRepresentante.Value)
            {
                if (string.IsNullOrWhiteSpace(cli.campNombreARepresentante))
                {
                    return false;
                }

                if (string.IsNullOrWhiteSpace(cli.campNombreBRepresentante))
                {
                    return false;
                }

                if (string.IsNullOrWhiteSpace(cli.campApellidoARepresentante))
                {
                    return false;
                }

                if (string.IsNullOrWhiteSpace(cli.campApellidoBRepresentante))
                {
                    return false;
                }

                if (cli.campRepresentanteTipoIdentificacion == null)
                {
                    return false;
                }

                if (cli.campRepresentanteTipoIdentificacion.Value == 5 && string.IsNullOrWhiteSpace(cli.campRepresentanteOtroTipoIdentificacion))
                {
                    return false;
                }

                if (string.IsNullOrWhiteSpace(cli.campRepresentanteNumeroIdentificacion))
                {
                    return false;
                }

                if (string.IsNullOrWhiteSpace(cli.campRepresentanteCiudadIdentificacion))
                {
                    return false;
                }
            }

            ////Actividad Económica del Solicitante

            if (cli.campVinculoLaboral == null)
            {
                return false;
            }

            if (cli.campPersonaExpuesta == null)
            {
                return false;
            }

            if (cli.campIngresosMensuales == null)
            {
                return false;
            }

            if (cli.campEgresosMensuales == null)
            {
                return false;
            }

            if (cli.campTotalActivo == null)
            {
                return false;
            }

            if (cli.campTotalPasivo == null)
            {
                return false;
            }

            if (cli.campVinculoLaboral.Value == 4 && cli.campVentasAnuales == null)
            {
                return false;
            }

            if (string.IsNullOrWhiteSpace(cli.campTextProcedenciaIngresos))
            {
                return false;
            }

            if (cli.campDeclaraRenta == null)
            {
                return false;
            }

            ////falta lo de operaciones internacionales
            ////referencias

            if (string.IsNullOrWhiteSpace(cli.campNombreCompletoFamiliarA))
            {
                return false;
            }

            if (string.IsNullOrWhiteSpace(cli.campParentescoFamiliarA))
            {
                return false;
            }

            if (string.IsNullOrWhiteSpace(cli.campCiudadFamiliarA))
            {
                return false;
            }

            if (string.IsNullOrWhiteSpace(cli.campTelefonoFamiliarA))
            {
                return false;
            }

            if (string.IsNullOrWhiteSpace(cli.campNombreCompletoFamiliarB))
            {
                return false;
            }

            if (string.IsNullOrWhiteSpace(cli.campParentescoFamiliarB))
            {
                return false;
            }

            if (string.IsNullOrWhiteSpace(cli.campCiudadFamiliarB))
            {
                return false;
            }

            if (string.IsNullOrWhiteSpace(cli.campTelefonoFamiliarB))
            {
                return false;
            }

            if (string.IsNullOrWhiteSpace(cli.campNombreCompletoReferenciaA))
            {
                return false;
            }

            if (string.IsNullOrWhiteSpace(cli.campRelacionReferenciaA))
            {
                return false;
            }

            if (string.IsNullOrWhiteSpace(cli.campCiudadReferenciaA))
            {
                return false;
            }

            if (string.IsNullOrWhiteSpace(cli.campTelefonoReferenciaA))
            {
                return false;
            }

            if (string.IsNullOrWhiteSpace(cli.campNombreCompletoReferenciaB))
            {
                return false;
            }

            if (string.IsNullOrWhiteSpace(cli.campRelacionReferenciaB))
            {
                return false;
            }

            if (string.IsNullOrWhiteSpace(cli.campCiudadReferenciaB))
            {
                return false;
            }

            if (string.IsNullOrWhiteSpace(cli.campTelefonoReferenciaB))
            {
                return false;
            }

            return true;
        }

        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public string GetTipoCliente(int idCliente)
        {
            return new JavaScriptSerializer().Serialize(CalcularTipoCliente( idCliente));
        }
        
        private string CalcularTipoCliente(int idCliente)
        {
            using (Banking_MSEntities bd = new Banking_MSEntities())
            {
                var cliente = (from c in bd.Clientes
                               where c.idCliente == idCliente
                               select c).Single();
                
                var cli = (from c in bd.Clientes
                           where c.idCliente == idCliente
                           select new { ingresos = c.campIngresosMensuales, ptos = c.ProductosClientes.Count() }).Single();

                if (cli.ingresos > 10000000 && cli.ptos > 1)
                {
                    cliente.idTipoCliente = 4;
                }
                else if (cli.ingresos > 10000000 && cli.ptos <= 1)
                {
                    cliente.idTipoCliente = 3;
                }
                else if (cli.ingresos <= 10000000 && cli.ptos > 1)
                {
                    cliente.idTipoCliente = 2;
                }
                else 
                {
                    cliente.idTipoCliente = 1;
                }

                bd.SaveChanges();
                return cliente.idTipoCliente.ToString();
            }
            
            //si el cliente no tiene ingresos altos ni productos 1            
            //si el cleinte no tiene ingresos altos y tiene productos 2
            //si el cliente tiene ingresos altos ni productos 3
            //si el cleinte tiene ingresos altos y tiene productos 4
        }
    }
}